查看原文
其他

精通Linux系列三十四:软件安装与管理

拾叁 更AI 2023-10-21

点击关注公众号,AI&编程干货及时送达   


安装软件

你可能会时不时地想要在你的Linux系统中添加更多的软件。但是,安装方法各不相同,因为Linux有多种“打包”软件的标准。你的Linux发行版可能在命令行进行安装,也可能使用一个或多个GUI工具,或者两者兼而有之。最常见的软件包类型有:

  • • **.deb 文件*Debian软件包,被Debian、Ubuntu和其他发行版使用。我们将介绍aptitudeapt-getdpkg(安装此格式软件的包管理命令)。

  • • **.rpm 文件*RPM包管理器文件被Red Hat、Fedora、CentOS和其他发行版所使用。这些文件由dnfyumrpm软件包管理器安装。

  • • **.tar.gz 文件和 *.tar.bz2 文件*压缩的tar文件。这种文件不是一个可安装的“包”,而是由tar创建并用gzip(.gz)或bzip2(.bz2)压缩的文件集合。而Debian和RPM软件包可以用一个命令安装,压缩的tar文件通常需要多个手动步骤。

你必须了解你的Linux系统使用哪种包类型。通常情况下,你不能(或不应该)混合像Debian和RPM这样的包类型。幸运的是,现代Linux系统在初始安装时通常会设置一个包管理器,所以你只需要使用它。

如果你不确定你正在运行哪个Linux发行版,以下命令之一应该能给你一个线索:

→ cat /etc/issue
Ubuntu 15.10 \n \l
→ more /etc/*-release
NAME="Ubuntu"
VERSION="15.10 (Wily Werewolf)"
...

大多数新软件必须由超级用户安装,因此你需要运行sudo命令(或等效命令)进行任何安装。例如:

→ sudo rpm -ivh mypackage.rpm
密码: ********

你的Linux发行版几乎肯定带有用于操作软件包的图形程序,但根据你的需求,你可能会发现命令行程序更简单或更快。

dnf

stdin  stdout  - 文件  -- opt  --help  --version

dnf [选项] [软件包]

dnf是最新的RPM软件包管理器(*.rpm* 文件)。

以下表格列出了与dnf相关的常见操作:

操作dnf命令
搜索满足你需求的软件包(支持*和?通配符)dnf search *命令名称*
检查是否已安装软件包dnf list installed *软件包名称*
下载但不安装软件包dnf download *软件包名称*
下载并安装软件包sudo dnf install *软件包名称*
安装软件包文件sudo dnf install *文件*.rpm
了解软件包信息dnf info *软件包名称*
列出软件包的内容rpm -ql *软件包名称*
查找已安装文件所属的软件包dnf provides */文件路径*
更新已安装的软件包sudo dnf upgrade *软件包名称*
删除已安装的软件包sudo dnf remove *软件包名称*
列出系统上安装的所有软件包`dnf list installed
检查系统上所有软件包的更新dnf check-update
更新系统上的所有软件包sudo dnf upgrade

yum

stdin  stdout  - 文件  -- opt  --help  --version

yum [选项] [软件包]

yum 是Red Hat Enterprise Linux、Fedora、CentOS和其他发行版中流行的RPM包管理器(*.rpm* 文件)。它主要是一个命令行工具,尽管您可能会遇到用于 yum 的图形前端,例如Fedora Linux上的PackageKit(包工具)。下表列出了使用 yum 的常见操作。对于 yum 不提供的本地文件的操作,我们直接使用 rpm 命令:

动作yum命令
搜索满足您需求的包 (支持通配符 * 和 ?)yum search *command_name*
检查是否已安装一个包yum list installed *package_name*
下载包但不安装。需要 downloadonly 插件; 安装它,运行:sudo yum install \ yum-downloadonlysudo yum --downloadonly install *package_name*
下载并安装一个包sudo yum install *package_name*
安装一个包文件rpm -ivh *package*.rpm
了解一个包的信息yum info *package_name*
列出一个包的内容rpm -ql *package_name*
查找已安装文件属于哪个包yum provides */path**/to/file*
更新已安装的包sudo yum update *package_name*
移除已安装的包sudo yum remove *package_name*
列出系统上安装的所有包`yum list installed
检查系统上所有包的更新yum check-update
更新系统上的所有包sudo yum update

rpm

stdin  stdout  - 文件  -- 选项  --帮助  --版本

rpm [选项] [文件]

如果您更喜欢手动下载和安装RPM包,请使用 rpm,这是 yum 在后台运行的相同的包管理程序。与 yum 不同,rpm 在您的计算机上本地工作:它不在互联网上搜索新的软件包。

rpm 不仅安装软件,还确保您的系统具有所有的前提条件。例如,如果包 superstuff 需要你尚未安装的包 otherstuffrpm 将不会安装 superstuff。但是,如果您的系统通过了测试,rpm 将安装请求的包。

RPM文件名通常采用以下格式 -..rpm。例如,文件名 emacs-23.1-17.i386.rpm 表示适用于i386 (Intel 80386及更高版本) 机器的emacs包,版本23.1-17。请注意,rpm 有时需要一个文件名参数(如 emacs-23.1-17.i386.rpm),其他时候只需要包名(如 emacs)。

动作rpm命令
检查是否已安装一个包rpm -q *package_name*
安装一个包文件sudo rpm -ivh *package_file*.rpm
了解一个包的信息rpm -qi *package_name*
列出一个包的内容rpm -ql *package_name*
查找已安装文件属于哪个包rpm -qf */path/to/file*

| 更新一个已安装的软件包 | sudo rpm -Uvh ---package_file---.rpm || | 删除一个已安装的软件包 | sudo rpm -e ---package_name--- | | 列出系统上安装的所有软件包 | rpm -qa | less |

APT

stdin  stdout  - 文件  -- 选项  --帮助  --版本

apt-get [选项] 软件包
apt-file [选项] 字符串
apt-cache [选项] 软件包
dpkg [选项] 软件包

APT(Advanced Packaging Tool(高级打包工具))命令组可以安装、删除和处理Debian(.deb)软件包。

在系统上升级软件包之前,请运行 sudo apt-get update 以检索关于哪些软件包可用的最新信息。

操作APT 命令
搜索符合您需求的软件包apt-file search ---package_name---
检查是否安装了一个软件包dpkg -s ---package_name---
下载但不安装软件包apt-get -d ---package_name---
下载并安装软件包sudo apt-get install ---package_name---
安装一个软件包文件dpkg -i ---package_file---.deb
了解一个软件包的信息apt-cache show ---package_name---
列出一个软件包的内容dpkg -L ---package_name---
查找一个已安装文件属于哪个软件包dpkg -S ---/path/to/file---
更新一个已安装的软件包sudo apt-get upgrade ---package_name---
删除一个已安装的软件包sudo apt-get remove ---package_name---
列出系统上安装的所有软件包dpkg -l
检查系统上所有软件包的更新sudo apt-get -u upgrade
更新系统上的所有软件包(要包括内核软件包,请用dist-upgrade替换upgrade)sudo apt-get upgrade

aptitude

stdin  stdout  - 文件  -- 选项  --帮助  --版本

aptitude [选项] [软件包]

aptitude 是另一个命令行包管理器,用于处理Debian(.deb)软件包。对于某些操作,例如使用本地*.deb*文件,您还需要知道dpkg,因为aptitude没有这个功能。

操作aptitude 命令
搜索符合您需求的软件包aptitude search ---package_name---
检查是否安装了一个软件包(检查输出中的“State: not installed”或“State: installed”)aptitude show ---package_name---
下载但不安装软件包aptitude download ---package_name---
下载并安装软件包sudo aptitude install ---package_name---
安装一个软件包文件dpkg -i ---package_file---.deb
了解一个软件包的信息aptitude show ---package_name---
列出一个软件包的内容dpkg -L ---package_name---
查找一个已安装文件属于哪个软件包dpkg -S ---/path/to/file---
更新一个已安装的软件包sudo aptitude safe-upgrade ---package_name---
卸载一个已安装的包sudo aptitude remove *包名*
列出系统上安装的所有包`aptitude search '~i'
检查系统上所有包的更新aptitude --simulate full-upgrade
更新系统上的所有包sudo aptitude full-upgrade

tar.gz 和 tar.bz2 文件

以*.tar.gz* 和 .tar.bz2 结尾的打包软件文件通常包含需要编译(构建)的源代码才能安装。典型的构建指令是:

  1. 1. 列出包内容,每行一个文件。确保每个文件在提取时不会覆盖系统上的重要内容,无论是意外还是恶意的:→ tar tvf package.tar.gz | less         gzip
    → tar tvf package.tar.bz2 | less        bzip2

  2. 2. 如果满意,将文件提取到新目录中。出于安全原因,使用您自己的账户运行这些命令,而不是root:→ mkdir newdir
    → cd installation_directory
    → tar xvf <路径>/package.tar.gz         gzip
    → tar xvf <路径>/package.tar.bz2        bzip2

  3. 3. 查找一个名为 INSTALL 或 README 的提取文件。阅读它以了解如何构建软件,例如:→ cd newdir
    → less INSTALL

  4. 4. 通常,INSTALL 或 README 文件会告诉您在当前目录中运行一个名为configure的脚本,然后运行 make,然后运行 make install。查看您可以传递给 configure 脚本的选项:→ ./configure --help然后安装软件:→ ./configure options
    → make
    → sudo make install

推荐阅读

··································

你好,我是拾叁,7年开发老司机、互联网两年外企5年。怼得过阿三老美,也被PR comments搞崩溃过。这些年我打过工,创过业,接过私活,也混过upwork。赚过钱也亏过钱。一路过来,给我最深的感受就是不管学什么,一定要不断学习。只要你能坚持下来,就很容易实现弯道超车!所以,不要问我现在干什么是否来得及。如果你还没什么方向,可以先关注我,这里会经常分享一些前沿资讯和编程知识,帮你积累弯道超车的资本。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存